/*
 * File:   BombaBombermanTest.cpp
 * Author: jaschu
 *
 * Created on 28-may-2014, 1:00:48
 */

#include "BombaBombermanTest.h"
#include "../server_BombaBomberman.h"
#include "../server_Coordenada.h"
#include "../server_Mapa.h"
#include "../server_ZombieVerde.h"
#include <iostream>

using std::cout;
using std::endl;
CPPUNIT_TEST_SUITE_REGISTRATION(BombaBombermanTest);

BombaBombermanTest::BombaBombermanTest() {
}

BombaBombermanTest::~BombaBombermanTest() {
}

void BombaBombermanTest::setUp() {
}

void BombaBombermanTest::tearDown() {
}

void BombaBombermanTest::testSetYGetPosicion() {
    int x = 2;
    int y = 3;
    Coordenada coord = Coordenada(x,y);
    cout << endl;
    BombaBomberman bomba1 = BombaBomberman();
    BombaBomberman bomba2 = BombaBomberman(coord,5,7);
    bomba1.ubicar(coord);
    coord = Coordenada(x,y);
    Coordenada result1 = bomba1.getPosicion();
    Coordenada result2 = bomba2.getPosicion();
    //fail if not true?
    CPPUNIT_ASSERT((result1.getX() == x) && (result1.getY() == y));
    CPPUNIT_ASSERT((result2.getX()) == x && (result2.getY() == y));
}

void BombaBombermanTest::testColisionarCon() {
    /*IOcupante* ocupante;
    BombaBomberman bombaBomberman;
    bombaBomberman.colisionarCon(ocupante);*/
    if (true /*check result*/) {
        CPPUNIT_ASSERT(true);
    }
}

void BombaBombermanTest::testSoltarEn() {
    /*Coordenada* coord;
    BombaBomberman bombaBomberman;
    bombaBomberman.soltarEn(coord);*/
    if (true /*check result*/) {
        CPPUNIT_ASSERT(true);
    }
}

void BombaBombermanTest::testEsperarYExplotar() {
    Coordenada coord = Coordenada(1,1);
    BombaBomberman bomba = BombaBomberman(coord, 5, 2);
    Mapa mapa = Mapa(10);
    mapa.inicializar();
    mapa.ubicarElemento(&bomba, coord);
    coord.incrementarY();
    ZombieVerde* zombie = new ZombieVerde();
    zombie->ubicar(coord);
    mapa.ubicarElemento(zombie, coord);
    for(unsigned int i = 0; i < 3; i++) {
        bomba.actuar(mapa);
    }
    CPPUNIT_ASSERT(!zombie->estaVivo());
    delete zombie;
    CPPUNIT_ASSERT(bomba.yaExploto());
}

